package com.xique.park.service.service.impl;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xique.common.core.utils.DateUtils;
import com.xique.common.core.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xique.park.mapper.ParkCarMngtypeLaneMapper;
import com.xique.park.bean.domain.ParkCarMngtypeLane;
import com.xique.park.service.service.IParkCarMngtypeLaneService;

/**
 * 车辆管理类型-通道通行权限关系Service业务层处理
 *
 * @author xique
 * @date 2021-12-09
 */
@Service
public class ParkCarMngtypeLaneServiceImpl extends ServiceImpl<ParkCarMngtypeLaneMapper, ParkCarMngtypeLane>
        implements IParkCarMngtypeLaneService {

    @Autowired
    private ParkCarMngtypeLaneMapper parkCarMngtypeLaneMapper;

    /**
     * 查询车辆管理类型-通道通行权限关系
     *
     * @param id 车辆管理类型-通道通行权限关系ID
     * @return 车辆管理类型-通道通行权限关系
     */
    @Override
    public ParkCarMngtypeLane selectParkCarMngtypeLaneById(Long id) {
        return parkCarMngtypeLaneMapper.selectById(id);
    }

    /**
     * 查询车辆管理类型-通道通行权限关系列表
     *
     * @param parkCarMngtypeLane 车辆管理类型-通道通行权限关系
     * @return 车辆管理类型-通道通行权限关系
     */
    @Override
    public List<ParkCarMngtypeLane> selectParkCarMngtypeLaneList(Long parkId, ParkCarMngtypeLane parkCarMngtypeLane) {
        QueryWrapper<ParkCarMngtypeLane> wrapper = new QueryWrapper<>();
        wrapper.eq("park_id", parkId);
        if (StringUtils.isNotNull(parkCarMngtypeLane.getCarMngtypeId())) {
            wrapper.like("car_mngtype_id", parkCarMngtypeLane.getCarMngtypeId());
        }
        return parkCarMngtypeLaneMapper.selectList(wrapper);
    }

    @Override
    public List<ParkCarMngtypeLane> selectBatchIds(List<Long> ids) {
        return parkCarMngtypeLaneMapper.selectBatchIds(ids);
    }

    /**
     * 新增车辆管理类型-通道通行权限关系
     *
     * @param parkCarMngtypeLane 车辆管理类型-通道通行权限关系
     * @return 结果
     */
    @Override
    public int insertParkCarMngtypeLane(ParkCarMngtypeLane parkCarMngtypeLane) {
        parkCarMngtypeLane.setCreateTime(DateUtils.getNowDate());
        return parkCarMngtypeLaneMapper.insert(parkCarMngtypeLane);
    }

    /**
     * 修改车辆管理类型-通道通行权限关系
     *
     * @param parkCarMngtypeLane 车辆管理类型-通道通行权限关系
     * @return 结果
     */
    @Override
    public int updateParkCarMngtypeLane(ParkCarMngtypeLane parkCarMngtypeLane) {
        parkCarMngtypeLane.setUpdateTime(DateUtils.getNowDate());
        return parkCarMngtypeLaneMapper.updateById(parkCarMngtypeLane);
    }

    /**
     * 批量删除车辆管理类型-通道通行权限关系
     *
     * @param ids 需要删除的车辆管理类型-通道通行权限关系ID
     * @return 结果
     */
    @Override
    public int deleteParkCarMngtypeLaneByIds(List<Long> ids) {
        return parkCarMngtypeLaneMapper.deleteBatchIds(ids);
    }

    /**
     * 删除车辆管理类型-通道通行权限关系信息
     *
     * @param id 车辆管理类型-通道通行权限关系ID
     * @return 结果
     */
    @Override
    public int deleteParkCarMngtypeLaneById(Long id) {
        return parkCarMngtypeLaneMapper.deleteById(id);
    }

    @Override
    public int batchInsert(List<ParkCarMngtypeLane> list) {
        return parkCarMngtypeLaneMapper.insertBatch(list);
    }

    @Override
    public int batchUpdate(List<ParkCarMngtypeLane> list) {
        return parkCarMngtypeLaneMapper.updateBatch(list);
    }

    @Override
    public List<ParkCarMngtypeLane> selectBatchcarMngtypeIds(List<Long> carMngtypeIds) {
        LambdaQueryWrapper<ParkCarMngtypeLane> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.in(ParkCarMngtypeLane::getCarMngtypeId, carMngtypeIds);
        return list(queryWrapper);
    }
}
